package day04;
/**
 * @author yzh
 * @desc TODO
 * @date 2025/4/11
 */
public class MagicSquare {
    public static void main(String[] args) {
        int n = 3; // 阶数必须是奇数
        int[][] arr = new int[n][n];
        int x = 0; // 初始行位置
        int y = n / 2; // 初始列位置（中间列）
        arr[x][y] = 1; // 第一个数字放在第一行中间

        for (int num = 2; num <= n*n; num++) {
            // 尝试右上角位置
            int nextX = x - 1;
            int nextY = y + 1;

            // 处理越界情况
            if (nextX < 0 && nextY >= n) {
                // 行列都越界
                nextX = x + 1;
                nextY = y;
            } else if (nextX < 0 ) {
                // 行越界，列不越界
                nextX = n - 1;
            } else if (nextY >= 3 ) {
                // 列越界，行不越界
                nextY = 0;
            }

            // 检查右上角是否已有值
            if (arr[nextX][nextY] != 0) {
                // 有值，填在前一个元素的正下方
                nextX = x + 1;
                nextY = y;
            }

            // 填入数字
            arr[nextX][nextY] = num;

            // 更新当前位置
            x = nextX;
            y = nextY;
        }

        // 打印九宫格
        printMagicSquare(arr);
    }

    public static void printMagicSquare(int[][] arr) {
        int n = arr.length;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }
    }
}